1. Field of the Invention
This invention relates to the field of computer electronics, and more particularly to input/output (I/O) functions of computing devices.
2. Background Art
The utility of a computer or computing device is often a function of the device's expansion capability. Most computing devices are equipped with one or more input/output (I/O) ports for connecting peripheral devices, such as modems, printers, card readers, etc. Different types of I/O ports may be used by different computing devices, such as, serial ports, infrared (IR) communication ports, and wireless (e.g., RF) communication ports. A computing device interconnected with one or more peripheral devices in this manner is referred to herein as a "host" computing device.
Peripheral devices serve to expand the available resources of a host computing device by, for example, adding communications, processing or storage capabilities. However, each host computing device is limited in its ability to support peripheral devices, and hence in its expandability, by the number and types of I/O ports provided. For example, a host computing device may be equipped with a single serial port, and be incapable of supporting any peripherals that use an IR port. Also, a host computing device may be equipped with one serial port and one IR port, but be incapable of supporting two peripheral devices that each require a serial port. Further, new types of communication ports may be developed in the future that may not interface with current communication port types. Thus, the hardware I/O configuration of the host computing device (i.e., the number and types of I/O ports) imposes limitations on the expandability of the host computing device.
Though it is a concern with most computing devices, the limitations of hardware I/O configurations can be more clearly illustrated with reference to small, portable computing devices such as personal digital assistants (PDAs), where the number of I/O ports is minimized to meet size constraints. To better understand the I/O limitations of computing devices such as PDAs, one example of a personal digital assistant is described below. In this example, the PDA is limited to a single serial port. The I/O limitations similarly exist for PDAs having a single port of a port type other than serial (e.g., IR, wireless, etc.).
The Personal Digital Assistant (PDA)
Unlike laptop computers, PDAs forego the use of a keyboard and a large display screen to maintain a compact shape capable, for example, of being carried in a pocket. In many PDAs, an electronic stylus and a small touch screen are employed for receiving user input, as well as for displaying the graphical output of the given application.
PDAs, such as the PalmPilot produced by 3Com Corporation, are designed to communicate with a personal computer to synchronize with databases located on the personal computer. Communication is achieved over an asynchronous serial link, for example, either directly with the personal computer or indirectly via a modem. Due to the desired dimensional limitations of the PDA, most PDAs have only one input/output (I/O) port, such as an RS-232 serial port, an IR port, or a wireless port. Thus, only one peripheral device matching the port type may be coupled to the PDA via the single I/O port, undesirably restricting the communication and expansion capabilities of the PDA.
FIG. 1 shows a PDA device (100) and a peripheral device (103) coupled via a serial connection. PDA device 100 is equipped with touch screen display 105, mechanical buttons (106 and 107), an electronic stylus (not shown), and serial port 102. A universal asynchronous receiver transmitter (UART) 101 is used to convert information from the PDA for transmission through serial port 102, and to convert serial information received through serial port 102. Mechanical buttons 106 are provided for user input, such as for the selection of predefined applications. Mechanical buttons 107 are provided for scrolling graphics on touch screen display 105.
Touch screen display 105 is separated into application display area 108 and user input area 109. Application display area 108 displays the graphical output of the current application being executed by PDA device 100. User input area 109 contains software buttons 110, alphabet script input area 111, and numeric script input area 112. Software buttons 110 are for performing system or application-based selection operations. Alphabet script input area 111 is used to enter alphabetical characters with the electronic stylus. Similarly, numeric script input area 112 is used to enter numeric characters with the electronic stylus. Character recognition software within the PDA converts user input in areas 111 and 112 into data characters.
Peripheral device 103 is equipped with serial connector 104 for coupling with serial port 102 of PDA device 100. Peripheral device 103 may be, for example, a personal computer or modem as previously described, or another device designed to communicate through the serial port of the PDA.
FIG. 2 is a general block diagram of the data processing components within a PDA. For simplicity, all components are illustrated as being commonly joined to bus 205. Other data paths between components may also be realized in PDA implementations. The components comprise display I/O 200, processor 201, button input 202, memory 203 and I/O port 204.
Display I/O 200 comprises the touch screen of the PDA and the video memory and driver circuitry required to display graphic output and receive touch screen input. Processor 201 comprises a microprocessor for executing sequences of instructions which embody the operating system and various applications of the PDA. Button input 202 comprises circuitry for responding to depressing of, for example, buttons 106 and 107, and converting the depressing action of the buttons into input for processor 201. Memory 203 comprises random access memory (RAM) for storing data and instructions for each application. Memory 203 may also include ROM (read-only memory) circuitry containing predefined system instructions. I/O port 204 comprises the driver circuitry and connection hardware for the single PDA I/O port, such as UART 101 and serial port 102 illustrated in FIG. 1.
FIG. 3 is a general block diagram illustrating the interaction of a PDA software application with a serial I/O port. PDA device 100 comprises PDA application 300 executing on processor 201. PDA application 300 is designed to communicate with a peripheral device, such as a personal computer. To achieve this communication, PDA application 300 sends data to, and receives data from, UART driver software 301. UART driver 301 is responsible for controlling the conversion between the parallel data format of processor 201 and the serial data format of the serial port. UART driver 301 is assisted in the conversion process by the hardware of UART 101.
UART 101 contains data buffers and timing hardware to implement data conversion, as well as to provide control over data transmission characteristics such as baud rate. Level conversion circuitry may also be present in UART 101 to provide RS-232 signaling compatibility. A serial link is formed between the PDA and a peripheral device by coupling the serial connector of the peripheral device to the serial port of the PDA, allowing UART 101 to transmit serial data to, and receive serial data from, the peripheral device.
Peripheral devices not configured to communicate through the serial port cannot interface with the PDA. For example, wireless RF devices and IR devices are not directly supported by the FDA. This is due, at least in part, to the compact design of the PDA, which has room for only one I/O port. The type of communication is therefore restricted to the port type implemented on the PDA.
Another drawback of conventional PDAs is that only one peripheral device of the given port type may be linked with the PDA. This prevents PDAs from being used in more complex communication applications, such as transaction applications involving more than one type of peripheral device. For example, one might desire to use a smart card or similar device for implementing secure transactions over a modem connection. Unfortunately, the PDA only supports communication with the modem. Another peripheral device would be required to interface with the smart card, but no other ports exist on the PDA.
Switching mechanisms have been implemented in the prior art which allow one host serial port to be coupled to one of several peripheral serial ports. However, switching is typically performed manually by a user either mechanically throwing a selector switch or selecting the currently desired peripheral port from a menu. Further, these switching mechanisms can only expand the number of ports of the type already provided. For example, an increase from one serial port to four serial ports is of no benefit when an IR port is needed.
Some prior art switching mechanisms provide software-controlled automatic switching of peripheral ports. However, in those switching mechanisms, only one application may utilize the host serial port at a time. Therefore, a first application must release control of the host I/O port (usually when the first application has completed its use of the host serial port), before the host serial port is switched for use by a second application.
For example, consider a modem coupled to a first peripheral port and a printer coupled to a second peripheral port. If a print operation is indicated while the modem is being used, such as to print a web page loaded from a network via a modem application, the print operation is spooled to memory. Once the modem application has quit, releasing the connection between the host computing device and the modem, the host serial port is switched from the modem to the printer, and the print operation is spooled from memory to the printer. Thus, an application must release control of a peripheral port before another application may seize control, resulting in interruption or delay of I/O processing operations among different applications, and non-seamless switching of serial I/O ports.